== 通讯协议-Uart0(Chinese)== 
=== MCU 与 上位机通讯协议(小端模式) ===
====物理层协议====
*通过串口通讯，<code>9600</code>波特率，校验位<code>None</code>，数据位<code>8</code>位，停止位<code>1</code>位

====帧格式表====
{| class="wikitable sortable"
|-
! 起始位   !! 数据位 !! 校验位置 !! 结束位置
|-
|0xA5,一个字节长度||见数据位表，变长||数据位（从数据位开始到数据位结束）的CRC校验，2个字节长度，低位在前，高位在后||0x5A，一个字节长度
|}

=====数据位表=====
{| class="wikitable sortable"
|-
! 数据来源地址  !! 目的地址 !! 帧序号 !! 数据长度 (第5-6位) !! 数据命令以及数据内容
|-
|0x01表示第一块CPU板，0x02表示第二块CPU板，0x03表示第三块CPU板，'''目前只有一块RK3568 CPU 板子，只用到0x01'''；<br>'''0x81表示 电源充电控制板'''，一个字节||0x01表示第一块CPU板，0x02表示第二块CPU板，0x03表示第三块CPU板'''目前只有一块RK3568 CPU 板子，只用到0x01'''；<br>0x81表示 电源充电控制板'''；<br>0x80表示目的地址是广播给所有的CPU电路板，0xfe表示目的地址是所有的RA2E1电路板，0xff表示广播给系统中所有设备，其他地址备用，一个字节长度||主动发送数据设备每发送一次数据加一个，两个字节，低位在前，高位在后（大于0xffff，清零），接收需要返回数据同数据返回||数据命令以及数据内容部分数据长度，两个字节，低位在前，高位在后||见数据命令以及数据内容表，变长
|}

====数据命令以及数据内容表====     
{| class="wikitable sortable"
|-
! 命令序号（定长，两个字节低位在前，高位在后），第7-8位   !! 命令内容（变长，0到n个字节），第9位开始 !! 是否需要回复（定长，1个字节）
|-
|1，CPU发送心跳||无||1表示需要返回,0表示无需返回
|-
|2，RA2E1应答心跳||0（超过1分钟没有收到任何数据，RA2E1重启CPU）||0表示无需返回
|-
|3，CPU读取RA2E1硬件版本||数据长度0|1表示需要返回,0表示无需返回
|-
|4，RA2E1应答上传硬件版本||例如，"NT2109A2",8个字节长度||0表示无需返回
|-
|5，CPU读取RA2E1软件版本||无||1表示需要返回,0表示无需返回
|-
|6，RA2E1应答上传软件版本||例如，"RA2E1211214001",14个字节长度||0表示无需返回
|-
|7，RA2E1上报状态|| 电池电压（2个字节，低位在前，高位在后，单位mV）；充电器接口电压（2个字节，低位在前，高位在后，单位mV）；原始电池电流（2个字节，得到的值减去10000，单位mA），校准过的电池电流（2个字节，得到的值减去10000，单位mA）；系统时间（年、月、日、时、分、秒、礼拜（年两个字节，其余1个字节，一个8个字节））； RTC状态（1个字节，0表示RTC正常，1，RTC初始化异常，2，没有秒中断，3，没有分钟中断）；板子温度，一个字节长度，实际温度+40，比如：20表示，-20℃，60表示20℃；当前bios状态0表示A bios，1表示B bios||1表示需要返回,0表示无需返回
|-
|8，CP回复||无||1表示需要返回,0表示无需返回
|-
|15，CPU 下达准备关机命令||无||1表示需要返回
|-
|16，RA回复||0表示正常，1表示错误||0表示无需返回
|-
|163，CPU发送(校准库仑计电流)||四个字节，校准库仑计电流（单位：ma）前面两个字节代表mcu当前电流，后面两个字节是电流表的当前电流（低位在前，高位在后）||1表示需要返回,0表示无需返回
|-
|164，MCU应答|| 一个字节，0，表示正常，其他表示错误 ||0表示无需返回
|-
|165，CPU发送(清空电池历史参数)|| 一个字节：0x01||1表示需要返回,0表示无需返回
|-
|166，MCU应答|| 一个字节，0，表示正常，其他表示错误 ||0表示无需返回
|-
|}